/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package BeansGerenciaveis;

import DAO.DisciplinaDao;
import DAO.PDFDao;
import bean.Autor;
import bean.Curso;
import bean.DisciplinasGS;
import bean.PDF;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.UploadedFile;

/**
 *
 * @author fernando
 */
@ManagedBean
@ViewScoped
public class DisciplinaGSBean implements Serializable{

    /**
     * Creates a new instance of DisciplinaGSBean
     */
    public DisciplinaGSBean() {
        this.disciplina = new DisciplinasGS();
        this.professorSelecionado = new Autor();
        this.cursoSelecionado = new Curso();
    }
    private DisciplinasGS disciplina;
    private Autor professorSelecionado;
    private Curso cursoSelecionado;
    private PDF pdfUpload;
    private ArrayList<DisciplinasGS> disciplinas;

    public void cadastrar() {
        if (new DisciplinaDao().cadastrar(disciplina)) {
            FacesContext facesContext = FacesContext.getCurrentInstance();
            facesContext.addMessage(null, new FacesMessage("Sucesso: ", "Disciplina Cadastrada com Sucesso!"));
            this.disciplina = new DisciplinasGS();
            this.professorSelecionado = new Autor();
            this.cursoSelecionado = new Curso();

        } else {
            FacesContext facesContext = FacesContext.getCurrentInstance();
            facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro", "Não foi Possível Cadastrar a Disciplina!"));
        }
    }
    
   public String editar() {
        String resultado = "";
        if (new DisciplinaDao().alterar(disciplina)) {
            FacesContext facesContext = FacesContext.getCurrentInstance();
            facesContext.addMessage(null, new FacesMessage("Sucesso: ", "Disciplina editada com Sucesso!"));
            resultado = "listar?faces-redirect=true&amp;includeViewParams=true";

        } else {
            FacesContext facesContext = FacesContext.getCurrentInstance();
            facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro", "Não foi Possível Editar a Disciplina!"));
        }
        
        return resultado;

    }
   
     public String selecionarEdicao() {
        String resultado = "";
        
        this.disciplina = new DisciplinaDao().buscar(this.disciplina.getId());
        //disciplina = new DisciplinasGS();
        resultado = "editar?faces-redirect=true&amp;includeViewParams=true";
        return resultado;
    } 
   
   

    public DisciplinasGS getDisciplina() {
        return disciplina;
    }

    public void setDisciplina(DisciplinasGS disciplina) {
        this.disciplina = disciplina;
    }

    public Autor getProfessorSelecionado() {
        return professorSelecionado;
    }

    public void setProfessorSelecionado(Autor professorSelecionado) {
        this.professorSelecionado = professorSelecionado;
    }

    public Curso getCursoSelecionado() {
        return cursoSelecionado;
    }

    public void setCursoSelecionado(Curso cursoSelecionado) {
        this.cursoSelecionado = cursoSelecionado;
    }

    public void addProfessor() {
        if (this.disciplina.getProfessores().contains(this.professorSelecionado)) {
        } else {
            this.disciplina.getProfessores().add(professorSelecionado);
            this.professorSelecionado = new Autor();
        }

    }

    public PDF getPdfUpload() {
        return pdfUpload;
    }

    public void setPdfUpload(PDF pdfUpload) {
        this.pdfUpload = pdfUpload;
    }

    public void removerProfessor() {
        this.disciplina.getProfessores().remove(this.professorSelecionado);
        this.professorSelecionado = new Autor();
    }

    public void doUploadPDF(FileUploadEvent event) {
        try {
            System.out.println("UploadRelatorio Avalização");
            UploadedFile file = event.getFile();
            if (file.getContents().length > 0) {
                if (new PDFDao().validarInsercaoPdf(file.getFileName())) {
                    System.out.println("Dados: " + file.getFileName() + file.getContentType());
                    pdfUpload = new PDF();
                    pdfUpload.setConteudo(file.getContents());
                    pdfUpload.setNome(file.getFileName());
                    disciplina.setPlanoDeCurso(pdfUpload);
                    FacesContext facesContext = FacesContext.getCurrentInstance();
                    facesContext.addMessage(null, new FacesMessage("Aquivo Recebido com Sucesso", ""));
                } else {
                    FacesContext facesContext = FacesContext.getCurrentInstance();
                    facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro:", "Já existe uma pdf cadastrado com esse nome! "));
                }

            }

        } catch (Exception ex) {
            Logger.getLogger(CursoBean.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public ArrayList<DisciplinasGS> getDisciplinas() {
        if(this.disciplinas == null){
            disciplinas = new DisciplinaDao().listar();
        }
        return disciplinas;
    }

    public void setDisciplinas(ArrayList<DisciplinasGS> disciplinas) {
        this.disciplinas = disciplinas;
    }
    
    
    
}
